package estate;

import java.util.HashMap;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Wlodek
 */
public class Oferta extends Estate {

    private int numer_oferty;
    private int typOferty;
    private int cena;
    private int powierzchnia;
    private int polozenie;
    private String wojewodztwo;
    private String miejscowosc;
    private String opis;
    private int ksiega_wieczysta;
    private User user;

    @Override
    public User getUser() {
        return user;
    }

    @Override
    public void setUser(User user) {
        this.user = user;
    }

    @Override
    public void dekoruj(HashMap<String, Object> hm) {
        this.numer_oferty = (Integer) hm.get("numer_oferty");
        this.typOferty = (Integer) hm.get("typ_oferty");
        this.cena = (Integer) hm.get("cena");
        this.powierzchnia = (Integer) hm.get("powierzchnia");
        this.polozenie = (Integer) hm.get("polozenie");
        this.wojewodztwo = (String) hm.get("wojewodztwo");
        this.miejscowosc = (String) hm.get("miejscowosc");
        this.opis = (String) hm.get("opis");
        this.ksiega_wieczysta = (Integer) hm.get("ksiega_wieczysta");
    }

    public Oferta() {
        super();
    }

    public int getCena() {
        return cena;
    }

    public void setCena(int cena) {
        this.cena = cena;
    }

    public int getKsiega_wieczysta() {
        return ksiega_wieczysta;
    }

    public void setKsiega_wieczysta(int ksiega_wieczysta) {
        this.ksiega_wieczysta = ksiega_wieczysta;
    }

    public String getMiejscowosc() {
        return miejscowosc;
    }

    public void setMiejscowosc(String miejscowosc) {
        this.miejscowosc = miejscowosc;
    }

    public int getNumer_oferty() {
        return numer_oferty;
    }

    public void setNumer_oferty(int numer_oferty) {
        this.numer_oferty = numer_oferty;
    }

    public String getOpis() {
        return opis;
    }

    public void setOpis(String opis) {
        this.opis = opis;
    }

    public int getPolozenie() {
        return polozenie;
    }

    public void setPolozenie(int polozenie) {
        this.polozenie = polozenie;
    }

    public int getPowierzchnia() {
        return powierzchnia;
    }

    public void setPowierzchnia(int powierzchnia) {
        this.powierzchnia = powierzchnia;
    }

    @Override
    public int getTypOferty() {
        return typOferty;
    }

    public void setTypOferty(int typ_oferty) {
        this.typOferty = typ_oferty;
    }

    public String getWojewodztwo() {
        return wojewodztwo;
    }

    public void setWojewodztwo(String wojewodztwo) {
        this.wojewodztwo = wojewodztwo;
    }

    @Override
    public boolean equals(Object e) {
        Oferta pe = (Oferta) e;
        if (this.numer_oferty == pe.numer_oferty &&
                this.typOferty == pe.typOferty &&
                this.cena == pe.cena &&
                this.powierzchnia == pe.powierzchnia &&
                this.polozenie == pe.polozenie &&
                this.wojewodztwo.equals(pe.wojewodztwo) &&
                this.miejscowosc.equals(pe.miejscowosc) &&
                this.opis.equals(pe.opis) &&
                this.ksiega_wieczysta == pe.ksiega_wieczysta &&
                this.getUser().equals(pe.getUser())) {
            return true;
        } else {
            return false;
        }
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 31 * hash + this.numer_oferty;
        hash = 31 * hash + this.typOferty;
        hash = 31 * hash + this.cena;
        hash = 31 * hash + this.powierzchnia;
        hash = 31 * hash + this.polozenie;
        hash = 31 * hash + (this.wojewodztwo != null ? this.wojewodztwo.hashCode() : 0);
        hash = 31 * hash + (this.miejscowosc != null ? this.miejscowosc.hashCode() : 0);
        hash = 31 * hash + (this.opis != null ? this.opis.hashCode() : 0);
        hash = 31 * hash + this.ksiega_wieczysta;
        return hash;
    }

    @Override
    public int compareTo(Estate arg1) {
        Oferta arg = (Oferta) arg1;
        if (getCena() != arg.getCena()) //sortowanie po większej cenie
        {
            return getCena() - arg.getCena();
        } else if (getPowierzchnia() != arg.getPowierzchnia()) //sortowanie po większym metrażu
        {
            return arg.getPowierzchnia() - getPowierzchnia();
        }
        return 0;
    }

    @Override
    public String toString() {
        String pom;
        pom = "1: " + numer_oferty + " 2: " + typOferty + " 3: " + cena + " 4: " +
                powierzchnia + " 5: " + polozenie + " 6: " + wojewodztwo + " 7: " + miejscowosc + " 8: " + opis + " 9: " + ksiega_wieczysta + " User: " + this.getUser().toString();
        return pom;
    }

    @Override
    public boolean rPlaceByCzyRozkladowy() {
        return false;
    }

    @Override
    public int rPlaceByLiczbaPieter() {
        return Integer.MAX_VALUE;
    }

    @Override
    public int rPlaceByRokBudowy() {
        return 1901;
    }

    @Override
    public int rPlaceByliczbaPokoi() {
        return 0;
    }

    @Override
    public int rPlaceByMetraz() {
        return 0;
    }
    
    @Override
    public int rPlaceByCena() {
        return cena;
    }
}


